我从抱微软大腿转到Java阵营的时候,做的第一个项目用的技术是Applet和Servlet, 当时互联网大潮风起云涌,Sun推出的 J2EE正处于风头浪尖, 企业级分布式计算平台,大家都趋之若鹜。
(上了年纪的程序员看到这张图应该很亲切吧!)
我虽说是做Java 的,但是J2EE中的很多核心卖点如EJB都没用过,出门都不好意思给别人打招呼。
于是就赶紧自学,翻着厚厚的《Master EJB》, 小心翼翼地编写Hello World EJB和XML 配置文件,战战兢兢地部署到WebLogic当中,终于,运行成功了。
可是这玩意儿怎么这么繁琐,笨重? 我就写个Hello Word 就如此费时,肯定有问题!
后来的事情大家都知道了, Spring革了EJB的命,除了一些不差钱的, 大家都转向了轻量级的Spring框架。
到了2006年, Sun 觉得J2EE(Java 2 Enterprise Edition)不足以反映Java的发展,毕竟Java 都发展到5.0了, 你还在那里Java 2,确实是有点二。 于是就把这个2给去掉了,叫做Java EE。
去掉了2以后, Java EE还是不行,完全干不过已经成为燎原之势,深入人心的SSH , SSM (当然Java EE中的一些技术规范还是很好的,如Servlet, JMS等)
2009年,Sun被Oracle 收购,Java EE也有了一个新爸爸, 这个新爸爸商业味太浓,经常挥动专利大棒四处出击,Google表示深有体会。
与此同时,IT市场发展越来越快,新技术层出不穷NoSQL, 容器,微服务,Serverless...... Java EE那种先提议,再讨论投票,最后实现的方式根本跟不上节奏,等你搞出来,连人家的背影都看不到了。
到了2017年,连Oracle 也不想要Java EE了,打算把Java EE交给Eclipse基金会来打理。但是Oracle 明确表示,你们Eclipse基金会不能使用Java 这个名称,那是我的商标!
无奈之下,Eclipse基金会发起了投票,最后选取了Jakarta EE, 又难读又难写。
(嗯,其实也不能这么说, Jakarta 实际上是Apache基金会下Java 工作组的名称, Tomcat最早也叫Jakarta Tomcat, 后来变大了,才把Jakarta 给去掉。)
现在可以好好发展了吧? 不行 ! Java EE从Oracle 向Eclipse基金会移交的过程中,还有很多商标的问题没有解决。
根据最近的Eclipse的会议记录,Oracle 提出了一系列让人难以接受的要求,其中一些甚至危及到了Eclipse基金会的生存。
Oracle 声称,Eclipse基金会发布的产品(如Eclipse IDE) 必须只能和Oracle 认证的Java 运行时绑定,其他厂商认证的或者没有认证过的运行时是不行的。
这样以来, Eclipse IDE 和GlassFish就不再是厂商中立的产品了,在协商开始的时候Oracle并没有告知这样的限制,这是很久以后才提出的,此时Java EE转移到Eclipse基金会的工作已经在进行中了。
但是一旦Eclipse的产品不再厂商中立, 免税转态就会失效,这将会是一个巨大的财政灾难,会危及Eclipse基金会的生存,因此Oracle的要求是不可接受的,双方的谈判完全失败。
Oracle 允许Eclipse基金会使用一些老的代码,但是不能修改。如果被修改的话,必须要重新命名。这包括项目名称(如JAX-RS)和包名(如javax.*), 前者还能接受,后者就要命了。
比如说Eclipse基金会对javax.servlet进行了修改,那就得重新命名,例如org.eclipse.servlet.... 那现有的使用Servlet的应用怎么办? 都得修改代码,跟着改名! 那Java EE 就变成了一个不能向后兼容的平台,这严重地违反了Java 的原则: 编写一次,到处运行。
如果真的这么干的话,管你什么Java EE, Jarkata EE, 都会被彻底杀死。
后续会怎么发展,让我们拭目以待。
ps : 文章中部分内容翻译自
https://headcrashing.wordpress.com/2019/05/03/negotiations-failed-how-oracle-killed-java-ee/
推荐阅读
阿里、腾讯、百度、华为、京东最新面试题汇集
5月语言排行榜:R跌出前二十,Python紧咬C++
如果我是一线技术主管